﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using PreguntaAlExperto.RulesLayer.Services;
using System.Net.Mail;
using System.Net;

namespace PreguntaAlExperto
{
    public class PasswordRecoverHandler
        : IHttpHandler
    {
        public void ProcessRequest(System.Web.HttpContext context)
        {
            if (!string.IsNullOrEmpty(context.Request.QueryString["email"]))
            {
                try
                {
                    PublisherService _service = new PublisherService();
                    string _newPassword = _service.resetPublisher(context.Request.QueryString["email"]);

                    if (!string.IsNullOrEmpty(_newPassword))
                    {
                        MailMessage _message = new MailMessage();
                        _message.From = new MailAddress("no-reply@preguntaalexperto.net", "Pregunta Al Experto");
                        _message.IsBodyHtml = false;
                        _message.Subject = "Recuperación de credenciales de Pregunta Al Experto.net";
                        _message.To.Add(new MailAddress(context.Request.QueryString["email"]));
                        _message.Body = "Gracias por ser parte de www.preguntaalexperto.net\n\nSu nueva contraseña se lista a continuación.\n\nContraseña: " + _newPassword + "\n\nSi desea publicar un artículo, ingrese a http://www.preguntaalexperto.net/publicar.aspx\n\nAtte.,\n\nEquipo de Pregunta Al Experto.net";
                        SmtpClient _sender = new SmtpClient("mail.preguntaalexperto.net");
                        _sender.UseDefaultCredentials = false;
                        _sender.Credentials = new NetworkCredential("info@preguntaalexperto.net", "ppgmz555");
                        _sender.Send(_message);

                        context.Response.Write("ok");
                    }
                    else
                        context.Response.Write("0");
                }
                catch(Exception e)
                {
                    context.Response.Write("0");
                }
                
            }
            else
                context.Response.Write("0");
        }

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
    }
}
